#ifndef CUSTOMVALUES_H
#define CUSTOMVALUES_H

#ifdef WMREADER_CLIENT

namespace client_set {

    const size_t clientWidth = 1170;
    const size_t clientHeight = 700;

    const size_t fileSystemColumnsNum = 4;
    const size_t fileSystemColumnsWidth = 290;

    const size_t registryValuesColumnNum = 3;
    const size_t registryValuesColumnsWidth = 200;
    const size_t registrySplitterWidth = 3;

    const size_t infoColumnNum = 2;
    const size_t infoColumnsWidth = 250;
    const size_t memoryPropNum = 4;
    const size_t displayPropNum = 3;

    const QString treeWidgetStyle = "qproperty-alternatingRowColors: 1;"
                                    "alternate-background-color: #F4F4F4;";

}

namespace client_ico {

    const QString app = ":/icons/appicon.png";
    const QString connect = ":/icons/connect.png";
    const QString disconnect = ":/icons/disconnect.png";
    const QString quit = ":/icons/quit.png";
    const QString about = ":/icons/about.png";
    const QString folder = ":/icons/folder.png";
    const QString file = ":/icons/file.png";
    const QString phone = ":/icons/phone.png";
    const QString drive = ":/icons/drive.png";
    const QString info = ":/icons/info.png";
    const QString reg_dword = ":/icons/reg_dword.png";
    const QString reg_binary = ":/icons/reg_binary.png";
    const QString reg_string = ":/icons/reg_string.png";
    const QString connected = ":/icons/connected.png";
    const QString disconnected = ":/icons/disconnected.png";
    const QString processor = ":/icons/processor.png";
    const QString memory = ":/icons/memory.png";
    const QString display = ":/icons/monitor.png";
    const QString battery = ":/icons/battery.png";
    const QString desktop = ":/icons/desktop.png";
}

#endif

namespace connect_set {

    const size_t readTimeout = 3;
    const size_t connectionTimeout = 2000;
    const size_t lastBuffer = 0xffffffff;

}

namespace dll_func {

    const std::wstring fileSystem = L"GetFileSystem";
    const std::wstring registryKeys = L"GetRegistryKeysList";
    const std::wstring registryValues = L"GetRegistryKeyValues";
    const std::wstring deviceInfo = L"GetDeviceInfo";
}

namespace registry_set {

    const size_t preDefKeysNumber = 4;
    const size_t maxValueBufferSize = 1024;

    typedef struct {
        WCHAR regKey[MAX_PATH];
    } REGKEY;

    typedef struct {
        DWORD valueType;
        DWORD bufferSize;
        WCHAR valueName[MAX_PATH];
        BYTE valueBuffer[maxValueBufferSize];
    } REGKEYVALUE;

}

namespace device_info {

    typedef struct {
        DWORD osMinVersion;
        DWORD osMajorVersion;
        DWORD osBuildNumber;
        DWORD procType;
        DWORD totalPhysMem;
        DWORD availPhysMem;
        DWORD totalVirtMem;
        DWORD availVirtMem;
        DWORD memoryLoad;
        DWORD batStatus;
        DWORD displayWidth;
        DWORD displayHeight;
        DWORD displayBits;
    } DEVICEINFO;

}

namespace cab_set {

    const std::wstring cabIni = L"\\wmreader.ini";
    const std::wstring appMgrBin = L"\\CeAppMgr.exe";

    const std::wstring appMgrValue = L"InstalledDir";
    const std::wstring appMgrKey = L"SOFTWARE\\Microsoft\\Windows CE Services";
}

const std::wstring pathToDll = L"\\Program Files\\WMReader\\wmreader.dll";

#endif